package cn.im.collection;

import org.junit.Test;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class ListDemo {


    /**
     * 数组转化为ArrayList
     */
    public void array2List(){
        //最简便的方法(推荐)
        List list = new ArrayList<>(Arrays.asList("a", "b", "c"));

        //使用Guava
//        List<String> l2 = Lists.newArrayList(aStringArray);

        //使用 Java8 的Stream(推荐)
        Integer [] myArray = { 1, 2, 3 };
        List myList = Arrays.stream(myArray).collect(Collectors.toList());

        //使用 spring工具类
        List myList1 =  CollectionUtils.arrayToList(myArray);
    }


    /**
     * Arrays.asList是适配器模式，只是转换接口，后台仍是数组，没有实现集合的修改方法
     * Arrays.asList()是泛型方法，传入的对象必须是对象数组。
     */
    @Test
    public void ArraysTest(){
        List<String> list = Arrays.asList("apple");
        for (String s : list) {
            System.out.println(s);
        }

        String[] myArray = {"apple","banana","Orange"};
        List<String> list1 = Arrays.asList(myArray);
        for (String s : list1) {
            System.out.print(s+" ");
        }
//        不能使用修改集合的相关方法，
//        list1.add("Guava");
        System.out.println();


        //因数组中为基本数据类型，会将myArray1转化为list
        int[] myArray1 = { 1, 2, 3 };
        List myList = Arrays.asList(myArray1);
        System.out.println(myList.size());
    }
}
